﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Collections.ObjectModel;
using AMail.Common.Interfaces.Data;
using System.Windows.Input;

namespace AMail.Modules.Messages.Models
{
  public interface IMessageListViewModel : INotifyPropertyChanged
  {
    /// <summary>
    /// Gets or sets the folder.
    /// </summary>
    /// <value>The folder.</value>
    IMailFolder Folder { get; set; }

    /// <summary>
    /// Gets the messages collection.
    /// </summary>
    /// <value>The messages.</value>
    ObservableCollection<IMailMessage> Messages { get; }

    /// <summary>
    /// Gets the selected messages changed command.
    /// </summary>
    /// <value>The selected messages changed command.</value>
    ICommand SelectedMessagesChangedCommand { get; }

    /// <summary>
    /// Gets the view source command.
    /// </summary>
    /// <value>The view source command.</value>
    ICommand ViewSourceCommand { get; }

    /// <summary>
    /// Gets the import from clipboard command.
    /// </summary>
    /// <value>The import from clipboard command.</value>
    ICommand ImportFromClipboardCommand { get; }

    /// <summary>
    /// Gets the import from gmail command.
    /// </summary>
    /// <value>The import from gmail command.</value>
    ICommand ImportFromGmailCommand { get; }

    /// <summary>
    /// Gets the delete messages command.
    /// </summary>
    /// <value>The delete messages command.</value>
    ICommand DeleteMessagesCommand { get; }

    /// <summary>
    /// Gets or sets the sort by.
    /// </summary>
    /// <value>The sort by.</value>
    string SortBy { get; set; }
  }
}
